package com.zhb.designmode.creationmode.single;
/**
 * 静态内部类实现单例
 */
public class Static {
    /**
     * 静态初始化器，由JVM来保证线程安全
     */
    private static class SingletonHolder{
        private static Static s = new Static();
    }

    private Static(){}

    /**
     * 当getInstance方法第一次被调用的时候,它第一次读取SingletonHolder.s，导致SingletonHolder类得到初始化；
     * 而这个类在装载并被初始化的时候，会初始化它的静态域，从而创建Static的实例，
     * 由于是静态的域，因此只会在虚拟机装载类的时候初始化一次，并由虚拟机来保证它的线程安全性。
     * @return
     */
    public static Static getInstance(){
        return SingletonHolder.s;
    }
}
